diff -Naur busybox-1.24.2/miscutils/vercmp.c busybox-1.24.2-patched/miscutils/vercmp.c
--- busybox-1.24.2/miscutils/vercmp.c	1970-01-01 00:00:00.000000000 +0000
+++ busybox-1.24.2-patched/miscutils/vercmp.c	2016-05-27 15:55:26.000000000 +0000
@@ -0,0 +1,83 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * libdpkg - Debian packaging suite library routines
+ * vercmp.c - comparison of version numbers
+ *
+ * Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree
+ */
+
+//applet:IF_VERCMP(APPLET(vercmp, BB_DIR_BIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_VERCMP) += vercmp.o
+
+//config:config VERCMP
+//config:	bool "vercmp"
+//config:	default n
+//config:	help
+//config:	  Compare version strings
+
+//usage:#define vercmp_trivial_usage
+//usage:	"version1 lt|gt|le|ge|eq version2"
+//usage:#define vercmp_full_usage "\n\n"
+//usage:	"return value 0 if true, else 1\n\n"
+//usage:	"l = less, g = greater, t = than, e|eq = equal"
+
+#include "libbb.h"
+
+static int ver_cmp(const char *val, const char *ref)
+{
+	int vc, rc;
+	long vl, rl;
+	const char *vp, *rp;
+	const char *vsep, *rsep;
+
+	for (;;) {
+		vp= val;  while (*vp && !isdigit(*vp)) vp++;
+		rp= ref;  while (*rp && !isdigit(*rp)) rp++;
+		for (;;) {
+			vc= val == vp ? 0 : *val++;
+			rc= ref == rp ? 0 : *ref++;
+			if (!rc && !vc) break;
+			if (vc && !isalpha(vc)) vc += 256; /* assumes ASCII character set */
+			if (rc && !isalpha(rc)) rc += 256;
+			if (vc != rc) return vc - rc;
+		}
+		val= vp;
+		ref= rp;
+		vl=0;  if (isdigit(*vp)) vl= strtol(val,(char**)&val,10);
+		rl=0;  if (isdigit(*rp)) rl= strtol(ref,(char**)&ref,10);
+		if (vl != rl) return vl - rl;
+
+		vc = *val;
+		rc = *ref;
+		vsep = strchr(".-", vc);
+		rsep = strchr(".-", rc);
+		if (vsep && !rsep) return -1;
+		if (!vsep && rsep) return +1;
+
+		if (!*val && !*ref) return 0;
+		if (!*val) return -1;
+		if (!*ref) return +1;
+	}
+}
+
+int vercmp_main (int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int vercmp_main (int argc, char **argv)
+{
+	int r, res;
+	if (argc < 4) bb_show_usage();
+	if (*argv[1] == '\0' || *argv[3] == '\0') bb_show_usage();
+	r = ver_cmp(argv[1], argv[3]);
+
+	if      (!strcmp(argv[2], "le")) res = !(r <= 0);
+	else if (!strcmp(argv[2], "ge")) res = !(r >= 0);
+	else if (!strcmp(argv[2], "lt")) res = !(r < 0);
+	else if (!strcmp(argv[2], "gt")) res = !(r > 0);
+	else if (!strcmp(argv[2], "eq")) res = !(r == 0);
+	else bb_error_msg_and_die("unknown operator: %s", argv[2]);
+
+	//printf("%s\n", res == 0 ? "true" : "false");
+	return res;
+}
